package com.decorate.demo05;

import java.time.format.DateTimeFormatter;

/**
 * 4.具体装饰角色：HeaderDecorator 装饰发票头
 */
public class HeaderDecorator extends OrderDecorator{

    public HeaderDecorator(Order order) {
        super(order);
    }

    public void print(){
        // 装饰发票主体，增加发票头部
        this.printHeader();
//        super.print();// HeaderDecorator的属性items并没有值,因此没有item条目输出
        super.order.print();//得调用super.order 的 FooterDecorator对象 进行输出
        /**
         * super.order指向FooterDecorator.因为HeaderDecorator的order属性在super的OrderDecorator中定义,
         * 而且在new HeaderDecorator时传入的就是FooterDecorator对象,并在OrderDecorator中this.order=order赋值
         * 给了order,就是说HeaderDecorator属性order的指向引用是FooterDecorator对象.
         */
    }

    private void printHeader(){
        System.out.println("********************* 新华书店 *********************");
        System.out.println("顾客姓名：" + order.getCustomerName() + "    日期：" + order.getSalesDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
        System.out.println("--------------------------------------------------");
        System.out.println("  书名         数量        价格           小计");
    }
}
